/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 自定义泛型;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * @description
 *  异常类不可以使用泛型
 * @author 俊昭
 * @date 2022/4/22
*/
public class test {
    public static void main(String[] args) {
        // 如果定义了泛型类，实例化没有指明泛型则默认为泛型类型为Object类型
        // 要求定义的类如果是带泛型的，实例化时要指明类的泛型
        Order order = new Order();
        order.setOrderT(123);
        order.setOrderT("asd");

        // 实例化时指明类的泛型
        Order<String> o1 =new Order<>();
        o1.setOrderT("AAA");


        SubOrder so =new SubOrder();
        // 由于子类在继承带泛型的父类时，指明了泛型类型。则实例化子类对象时不需要再指明泛型
        so.setOrderT(2);

        SubOrder1<String> su =new SubOrder1<>();
        //
        su.setOrderT("String orderT");


    }
    @Test
    public void test1(){
        // 泛型不同不能相互赋值
        ArrayList<String> list = null;
        ArrayList<Integer> list1 = null;
        // 相同泛型可以
        ArrayList<String> list2 = new ArrayList<>();
        list = list2;// 没有问题

        Order<String> o = new Order<>();
        List<Integer> test = o.test(new Integer[]{1, 2, 3});


//        编译不过 但其实运行时没有问题
//        list = list1;需要的类型: ArrayList<String>  提供的类型:ArrayList<Integer>
    }
}
